package com.hhh.corejava.code07_面向对象;

/**
 * @autor 黄焕晖
 * @date 2025年11月01日19:38
 **/
public class Test05_static关键字 {
    public static void main(String[] args) {
        SomeClass.name= "admin";//静态属性可以通过类访问
//        SomeClass.age = 18;//实例属性不能通过类访问

        SomeClass sc = new SomeClass();
        SomeClass.name= "jack";
        sc.age=19;
        //此时访问sc.name是jack
        System.out.println(sc.name);
        System.out.println(sc.age);
        System.out.println("------------------------------");
        SomeClass sc1 = new SomeClass();
        SomeClass.name= "luck";
        sc1.age=19;
        System.out.println(SomeClass.name);
        System.out.println(sc1.age);
        System.out.println("------------------------------");
        //此时访问的sc.name是luck
        System.out.println(SomeClass.name);
        System.out.println(sc.age);

        //为了防止静态属性与实例属性在使用过程中产生误解
        //因此，在实际开发过程中，所有静态属性建议通过类名.属性名的方式访问
        //而不建议通过对象.属性名的方式访问
    }
}

class SomeClass{

    //静态属性，属于类的，可以直接通过类名.属性名访问
    static String name;
    //事例属性，属于对象的，必须通过对象.属性名访问
    int age;

    public void show(){
        System.out.println("实例方法");
        //实例方法中可以正常访问静态属性和实例属性
        System.out.println(name);
        System.out.println(age);
    }

    public static void print(){
        System.out.println("静态方法");
        System.out.println(name);
        //静态方法中只能正常访问静态属性
        //System.out.println(age);报错
    }

    public void show2(){
        System.out.println("实例方法");

        show();
        print();
    }

    public static void print2(){
        System.out.println("静态方法");
//        show();报错
        print();
    }
}
